1. Field of the Invention
The present invention relates to an IGMP proxy and, more particularly, to a system and method of protecting an IGMP proxy.
2. Description of the Related Art
An Internet Group Multicast Protocol (IGMP) proxy is a router that is connected between a number of hosts and a multicast router in a communications network. In operation, the IGMP proxy interacts with the hosts, which are connected to a downstream side of the proxy, like a multicast router. At the same time, the IGMP proxy interacts with the multicast router, which is connected to an upstream side of the proxy, like a host.
FIG. 1 shows a block diagram that illustrates a prior-art communications network 100. As shown in FIG. 1, network 100 includes a multicast source 110 and a multicast router 112 that is connected to multicast source 110. Multicast source 110 outputs streams of multicast data packets to router 112. Each multicast data packet, in turn, has an associated multicast group address.
For example, multicast source 110 can be implemented with a video head end, and the multicast data packets can represent television channels that are identified by the multicast group addresses. For example, a multicast data packet of television channel 1 can have a first multicast group address, while a multicast data packet of television channel 2 can have a second multicast group address.
Multicast router 112, in turn, includes a router input that receives the multicast data packets from multicast source 110, a number of router output interfaces, and a memory that stores a forwarding table that identifies which television channels (multicast group addresses) are forwarded to each router output interface.
In addition, communications network 100 includes a number of hosts 114, and an IGMP proxy 116 which has an upstream side that is connected to multicast router 112, and a downstream side that is connected to the hosts 114. The hosts 114 can be, for example, end users.
As further shown in FIG. 1, IGMP proxy 116 includes a control bus 120 and a number of host line cards 122 that are connected to a number of hosts 114 and control bus 120. Control bus 120, which passes only non-packet control messages, can be implemented with, for example, a low-speed, Ethernet-type bus.
The host line cards 122, in turn, can be implemented with, for example, xDSL line cards. Each host line card 122 includes a logic block 122A that has logic circuitry and a memory that stores a host table. The host table indicates the television channel that is received by each host (e.g., end user) 114 that is connected to host line card 122. In the FIG. 1 example, the host table of a host line card 122B indicates the television channels to be received by a host (end user) 114A.
In addition, IGMP proxy 116 further includes a number of multicast line cards 126 that are connected to control bus 120, and a number of forwarding units, such as routers, to receive multicast data packets. Each multicast line card 126 has a memory that includes a forwarding table. The forwarding table includes the multicast group addresses of the television channels that are received by the card, and the host line cards 122 that are to receive the television channels.
As shown in the FIG. 1 example, a multicast line card 126A is connected to multicast router 112. Multicast line card 126A receives control and data information from multicast router 112, and outputs control information to multicast router 112. Multicast line card 126A has a forwarding table that includes the multicast group addresses of the television channels that are received by card 126A, and the host line cards 122 that are to receive the television channels from card 126A.
In addition, IGMP proxy 116 additionally includes a fabric switch module card 128 that is connected to control bus 120, and between the host line cards 122 and the multicast line cards 126. Fabric switch module card 128 passes data packets between the line cards at up to OC12 speeds.
Further, IGMP proxy 116 can also include a primary control module (PCM) card 130 that is connected to control bus 120. PCM card 130 includes a memory and a processor that is connected to the memory. The memory includes a first PCM table that has the multicast group addresses of the television channels that are received by the host line cards 122. The memory also includes a second PCM table that has the multicast group addresses of the television channels that are received by the multicast line cards 126.
The memory can also store an operating system and a set of program instructions. The operating system can be implemented with, for example, the Linux operating system, although other operating systems can alternately be used. The program instructions can be written in, for example, C++ although other languages can alternately be used.
The processor, which can be implemented with, for example, a 32-bit processor, operates on the data in the first and second PCM tables in response to the program instructions. Although only one processor is described, multiple processors in parallel can also be utilized to increase the capacity to process large amounts of data. (PCM card 130 also includes circuitry for inserting information into the memory, and removing information from the memory.)
In operation, network 100 supports IGMP Version 1 (RFC 1112) and Version 2 (RFC 2236) such that multicast router 112 executes the router protocol, and the hosts 114 execute the host protocol. Further, the host line cards 122, the multicast line cards 126, and PCM card 130 of IGMP proxy 116 execute both the router protocol and the host protocol.
For example, assume that multicast source 110 outputs multicast data packets with N permanent multicast group addresses that represent N television channels. In this example, multicast router 112 receives the N television channels, and forwards the television channels to the hosts (proxies) which are connected to the router output interfaces in accordance with the forwarding table, which identifies the multicast group addresses of the television channels that are forwarded to each router output interface.
The forwarding table identifies all of the multicast groups that can be forwarded from the router output interfaces. Thus, before multicast router 112 can forward a television channel to a host (proxy) that is connected to a router output interface, multicast router 112 must first associate the multicast group address of the television channel with the router output interface in the router forwarding table.
Thus, when the forwarding table includes N television channels, and the router output interface connected to IGMP proxy 116 is associated with each television channel, multicast router 112 forwards all N channels to IGMP proxy 116. As a result, in the present example, multicast router 112 forwards all N television channels to multicast line card 126A of IGMP proxy 116.
When the multicast line cards 126 receive multicast data packets, the multicast line cards 126 forward the multicast data packets to the host line cards 122 as indicated in the forwarding tables on the multicast line cards 126. For example, when multicast line card 126A receives channel 2, multicast line card 126A forwards channel 2 to host line card 122A when host line card 122A is associated with channel 2 in the forwarding table on multicast line card 126A.
In the present example, when a host (end user) 114 wishes to join a group (receive a television channel), the host (end user) 114 outputs an unsolicited version two (V2) membership report which, among other things, identifies the multicast group address of the group (television channel) that the host (end user) 114 wishes to receive.
For example, when host (end user) 114A wishes to receive television channel 2, host (end user) 114A outputs an unsolicited V2 membership report to host line card 122A (which host (end user) 114A sees as a multicast router) that identifies the multicast group address of channel 2.
When a host line card 122 receives an unsolicited V2 membership report, the host line card 122 sends a non-packet control message to PCM card 130. When the multicast group address of the television channel identified in the unsolicited V2 membership report is not received by the host line card 122, but is listed in the second PCM table as currently received by a multicast line card 126, PCM card 130 sends a non-packet control message to the multicast line card 126. The control message instructs the multicast line card 126 to add the host line card 122 to the forwarding table to receive the television channel.
For example, when channel 2 is not received by host line card 122A, but the second PCM table indicates that multicast line card 126A is currently receiving television channel 2, PCM card 130 sends a control message to multicast line card 126A via control bus 120 to associate host line card 122A in the forwarding table to allow multicast line card 126A to forward channel 2 to host line card 122A.
On the other hand, when the multicast group address of the television channel is not currently received by a multicast line card 126, IMGP proxy 116 must act as a host, and thereby generate an unsolicited V2 membership report which identifies the multicast group address of the group (television channel), and transmit the unsolicited V2 membership report to multicast router 112.
In the present example, when the second PCM table indicates that no multicast line card 126 is receiving channel 2, PCM card 130 outputs join information to multicast line card 126A which, in turn, generates the unsolicited V2 membership report to be forwarded to multicast router 112.
When multicast router 112 receives an unsolicited V2 membership report at a router output interface, multicast router 112 associates the multicast group address of the group (television channel) from the unsolicited V2 membership report with the router output interface in the forwarding table when the multicast group address is not currently associated with the interface.
For example, when multicast router 112 receives an unsolicited V2 membership report that identifies channel 2, and channel 2 is not currently associated with the router output interface in the forwarding table, multicast router 112 associates the multicast group address of channel 2 with the router output interface in the forwarding table.
When a host (end user) 114 wishes to no longer receive a multicast data packet (television channel), the host (end user) 114 outputs a leave message to the associated host line card 122. When a host line card 122 receives a leave message, the host line card 122 sends a non-packet control message to PCM card 130.
When the leave message is from the last host (end user) 114 of the last host line card 122 to leave the group (stop receiving the channel), PCM card 130 removes the multicast group address of the group (the television channel) from the first PCM table, which includes the multicast group addresses that are received by the host line card 122.
For example, when host line card 122A receives from host (end users) 114A a leave message which identifies the multicast group address of channel 9, host (end user) 114A is the last host (end user) 114A to leave channel 9, and host line card 122A is the last host line card 122 to leave channel 9, PCM card 130 removes the multicast group address of channel 9 from the first PCM table. (PCM card 130 subsequently removes the multicast group address of the group (the television channel) from the second PCM table, which includes the multicast group addresses that are received by the multicast line cards 126.)
In addition, PCM card 130 sends a control message to the multicast line card 126 that is currently receiving the television channel (with the multicast group address). The control message instructs the multicast line card 126 to remove the host line card 122 from the forwarding table so that the host line card 122 no longer receives the television channel.
For example, when multicast line card 126A is currently receiving television channel 9, PCM card 130 sends a non-packet control message to multicast line card 126A to remove host line card 122A from the forwarding table to prevent multicast line card 126A from forwarding channel 9 to host line card 122A.
In addition, since no other host line card 122 receives the group (television channel), IMGP proxy 116 must act as a host, and thereby generate a leave message which identifies the multicast group address of the group (television channel), and transmit the leave message to multicast router 112.
In the present example, when the first PCM table indicates that none of the other host line cards 122 receives channel 9, PCM card 130 outputs leave information to multicast line card 126. In response, PCM card 130 generates a leave message that is forwarded to multicast router 112.
When multicast router 112 receives a leave message from a host (proxy) 116, and the leave message is from the last host (proxy) 116 connected to the router output interface to leave the group (television channel), multicast router 112 de-associates the multicast group address of the group (television channel) from the router output interface in the forwarding table on multicast router 112.
In addition to the above, multicast router 112 and PCM card 130 both periodically query the attached hosts to insure that the hosts are still receiving the multicast data packets. For example, PCM card 130 runs a general query timer that measures a query interval. When the query timer expires, indicating that the query interval has ended, PCM card 130 outputs a general query to a host line card 122 which is forwarded to each host (end user) that is connected to the host line card 122. The general query includes a maximum response time. In addition to outputting the general query, PCM card 130 also starts a response timer that measures the maximum response time.
In response to a general query, a host (end user) 114 outputs a V2 membership report that indicates the multicast group address of the group (television channel) which is currently received by the host (end user) 114. For example, when connected to channel 7, host (end user) 114A responds to a general query by outputting a V2 membership report that includes the multicast group address of channel 7.
After PCM card 130 receives the V2 membership reports from the hosts (end users) 114, PCM card 130 updates the first PCM table, which includes the multicast group addresses for the host line card 122, and again starts the general query timer to measure the next query interval. On the other hand, when the response timer expires, PCM card 130 removes the multicast group addresses that were in the first PCM table, but were not updated by a V2 membership report.
For example, when host (end user) 114A, which was the only, host (end user) 114 connected to receive television channel 7, is turned off, the response timer expires without PCM card 130 receiving a V2 membership report that identifies the multicast group address of channel 7. As a result, PCM card 130 removes the multicast group address of channel 7 from the first PCM table. In addition, PCM card 130 outputs a control message to the multicast line card 126 that is receiving channel 7 to remove host line card 122A from its forwarding table.
Similarly, multicast router 112 runs a general query timer that measures a query interval. When the query timer expires, indicating that the query interval has ended, multicast router 112 outputs a general query to the hosts (proxies) 116 that are connected to a router output interface. The general query includes a maximum response time. In addition to outputting the general query, multicast router 112 also starts a response timer that measures the maximum response time.
In response to a general query, a host (proxy) outputs a membership report that indicates the multicast group addresses of the groups (television channels) which are currently received by the multicast line card 126 of the host (proxy). In the present example, host (proxy) 116 responds to a general query by outputting a membership report that includes all of the multicast group addresses received by multicast line card 126A of host (proxy) 116.
After multicast router 112 receives the membership report from the hosts (proxies) 116, multicast router 112 updates the forwarding table of multicast group addresses for the router output interface, and again starts the general query timer to measure the next query interval. On the other hand, when the response timer expires, multicast router 112 removes the multicast group addresses that were in the table, but were not updated by a membership report.
For example, when host (proxy) 116, which is the last member to receive television channel 7, fails to include channel 7 in the response to the query and the response timer expires, multicast router 112 removes the multicast group address of channel 7 from the from the forwarding table for the router output interface.
In addition to general queries, multicast router 112 and PCM card 130 can output group specific queries to the hosts (proxies) 116 that are connected to a router output interface, and the hosts (end users) 114 that are connected to a host line card 122, respectively, to determine if any host is connected to a group (television channel).